Apex প্রোগ্রামিং ভাষার মৌলিক কাঠামো (Basic Structure) হলো Salesforce প্ল্যাটফর্মে কাস্টম লজিক এবং বিভিন্ন কার্যক্রম সম্পন্ন করার জন্য নির্দিষ্ট কিছু উপাদান ও সিনট্যাক্সের সমন্বয়। এখানে Apex এর মূল কাঠামো এবং এর বিভিন্ন উপাদান তুলে ধরা হলো:
Apex একটি অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা হওয়ায় এখানে ক্লাসের ভূমিকা অত্যন্ত গুরুত্বপূর্ণ। ক্লাস হলো লজিক এবং ডেটার জন্য একটি ব্লুপ্রিন্ট, যেখানে ফিল্ড, মেথড, কন্সট্রাক্টর ইত্যাদি সংরক্ষণ করা হয়। ক্লাস ডিক্লেয়ার করার জন্য public
, private
, বা global
অ্যাক্সেস মডিফায়ার ব্যবহার করা যায়।
public class MyClass {
// Variables
public String name;
// Constructor
public MyClass(String name) {
this.name = name;
}
// Method
public void display() {
System.debug('Name: ' + name);
}
}
মেথড হলো কার্যকরী কোডের একটি ব্লক, যা নির্দিষ্ট কার্যক্রম সম্পাদন করতে ব্যবহার করা হয়। মেথডে অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ, নাম এবং প্যারামিটার থাকে।
public void displayMessage(String message) {
System.debug('Message: ' + message);
}
Apex-এ বিভিন্ন ধরনের ডেটা টাইপের ভ্যারিয়েবল ডিক্লারেশন করা যায়। প্রতিটি ভ্যারিয়েবল নির্দিষ্ট ডেটা ধারণ করে এবং ভ্যারিয়েবল ডিক্লারেশনের সময় ডেটা টাইপ উল্লেখ করতে হয়।
public String myString = 'Hello, Salesforce!';
public Integer myNumber = 100;
public Boolean isActive = true;
Apex-এ Salesforce ডেটাবেজে ডেটা খুঁজতে SOQL (Salesforce Object Query Language) এবং SOSL (Salesforce Object Search Language) ব্যবহার করা হয়। SOQL সাধারণত রেকর্ড পুনরুদ্ধার করতে ব্যবহৃত হয়, যেখানে SOSL বিভিন্ন অবজেক্টে সার্চ করতে ব্যবহৃত হয়।
// SOQL Example
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
// SOSL Example
List<List<SObject>> searchResults = [FIND 'John' IN ALL FIELDS RETURNING Contact(Name, Phone)];
Trigger হলো Apex কোডের একটি বিশেষ অংশ যা ডেটাবেজ ইভেন্টের উপর ভিত্তি করে কাজ করে, যেমন- ডেটা ইনসার্ট, আপডেট, বা ডিলিট হলে।
trigger AccountTrigger on Account (before insert, before update) {
for(Account acc : Trigger.new) {
acc.Name = 'Default Name';
}
}
Apex-এ লজিক্যাল প্রবাহ নিয়ন্ত্রণ করতে if-else
, switch
, for loop
, while loop
ইত্যাদি কন্ট্রোল স্টেটমেন্ট ব্যবহার করা হয়।
// if-else statement
if (isActive) {
System.debug('Active');
} else {
System.debug('Inactive');
}
// For Loop
for (Integer i = 0; i < 10; i++) {
System.debug(i);
}
Apex-এ try-catch-finally ব্লক ব্যবহার করে এক্সসেপশন হ্যান্ডলিং করা হয়। এর মাধ্যমে কোডের কোনো অংশে সমস্যা দেখা দিলে তা নির্দিষ্টভাবে নিয়ন্ত্রণ করা যায়।
try {
Integer result = 10 / 0;
} catch (ArithmeticException e) {
System.debug('Cannot divide by zero');
} finally {
System.debug('Operation completed');
}
কোডে মন্তব্য লিখতে Apex-এ //
এবং /* ... */
ব্যবহার করা হয়, যা কোড বুঝতে সহায়ক।
// Single line comment
/* Multi-line comment */
Apex কোড লেখার সময় একটি ক্লাসে মেথড, ভ্যারিয়েবল, কন্ট্রোল স্টেটমেন্ট, এবং কুয়েরি স্টেটমেন্ট গঠন করে একটি সম্পূর্ণ কার্যকরী কোড তৈরি করা হয়। Apex কোডের সাধারণ কাঠামো নিচের মতো:
public class SampleClass {
// Variable declaration
public String myString = 'Hello';
// Constructor
public SampleClass() {
// Constructor logic
}
// Method
public void displayMessage() {
System.debug('Message: ' + myString);
}
// SOQL Query
public List<Account> getAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Apex-এর এই মৌলিক কাঠামোটি Salesforce প্ল্যাটফর্মে কাস্টম লজিক এবং কার্যক্রম পরিচালনার জন্য একটি শক্তিশালী ভিত্তি তৈরি করে, যা ডেভেলপারদের জন্য সহজে ব্যবহারযোগ্য এবং কার্যকরী কোড তৈরি করতে সহায়ক।
Apex ক্লাস এবং মেথড Salesforce প্ল্যাটফর্মে কাস্টম লজিক তৈরি এবং পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। Apex ক্লাস এবং মেথড কীভাবে কাজ করে এবং কীভাবে এগুলো সংজ্ঞায়িত করা হয় তা নিচে ব্যাখ্যা করা হলো:
Apex ক্লাস হলো একটি কাস্টম অবজেক্ট-অরিয়েন্টেড কাঠামো, যেখানে বিভিন্ন প্রোপার্টি, মেথড, এবং লজিক ডিফাইন করা হয়। এটি একই ধরনের বৈশিষ্ট্য এবং মেথডের সমন্বয়ে গঠিত একটি নীলনকশা হিসেবে কাজ করে, যা বিভিন্ন কাজ করতে পারে।
Apex ক্লাস মূলত বিভিন্ন অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় কার্যক্রমগুলো একত্রিত করে একটি একক কাঠামোতে উপস্থাপন করে, যা পরে অন্যান্য কোড থেকে অ্যাক্সেস করা যায়। Apex ক্লাসের মাধ্যমে সেলসফোর্স ডেটাবেজ ইভেন্ট, ডেটা প্রসেসিং, এবং অন্যান্য কার্যক্রম সহজে পরিচালনা করা যায়।
উদাহরণ:
public class AccountHandler {
// ক্লাস ভ্যারিয়েবল
public String accountName;
// কনস্ট্রাক্টর
public AccountHandler(String name) {
accountName = name;
}
// একটি মেথড
public void displayAccountName() {
System.debug('Account Name: ' + accountName);
}
}
এখানে AccountHandler
নামে একটি ক্লাস তৈরি করা হয়েছে, যেখানে accountName
নামে একটি ভ্যারিয়েবল এবং displayAccountName()
নামে একটি মেথড ডিফাইন করা হয়েছে।
Apex মেথড হলো ক্লাসের ভিতরে ডিফাইন করা একটি নির্দিষ্ট কার্যক্রম, যা কোনো বিশেষ কাজ সম্পন্ন করে। মেথড একটি কোড ব্লক হিসেবে কাজ করে, যেখানে বিভিন্ন ইনপুট গ্রহণ করে নির্দিষ্ট আউটপুট প্রদান করা হয়। মেথড বিভিন্ন সময়ে বিভিন্ন কাজ করার জন্য একই ক্লাসের অন্যান্য মেথড বা ফাংশনের সাথে যুক্ত হতে পারে।
Apex মেথড ডিফাইন করার সময় অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ, এবং প্রয়োজনীয় আর্গুমেন্ট উল্লেখ করতে হয়। এটি ক্লাসের একটি অংশ হিসেবে কাজ করে এবং সেই ক্লাসের ভেতরে ডাটা ও প্রোপার্টি ব্যবহার করতে পারে।
উদাহরণ:
public class AccountHandler {
public void createAccount(String name) {
Account acc = new Account(Name = name);
insert acc;
System.debug('Account Created: ' + acc.Id);
}
}
এখানে createAccount
নামে একটি মেথড তৈরি করা হয়েছে, যা একটি নতুন অ্যাকাউন্ট তৈরি করে এবং সেটি সিস্টেমে ইনসার্ট করে।
Apex ক্লাস ও মেথড একত্রে Salesforce প্ল্যাটফর্মে শক্তিশালী কাস্টম ফাংশনালিটি তৈরিতে সহায়ক।
SOQL (Salesforce Object Query Language) এবং SOSL (Salesforce Object Search Language) উভয়ই Salesforce প্ল্যাটফর্মে ডেটা অনুসন্ধান ও পুনরুদ্ধার করার জন্য ব্যবহৃত হয়, তবে তাদের ভূমিকা এবং ব্যবহার আলাদা।
SOQL হলো Salesforce-এর নিজস্ব কুয়েরি ভাষা যা নির্দিষ্ট অবজেক্ট থেকে ডেটা পুনরুদ্ধার করতে ব্যবহৃত হয়। এটি অনেকটা SQL-এর মতো কাজ করে, কিন্তু SOQL শুধুমাত্র Salesforce অবজেক্টের উপর কুয়েরি চালাতে পারে।
SOQL মূলত তখন ব্যবহার করা হয় যখন ডেভেলপাররা নির্দিষ্ট অবজেক্টের নির্দিষ্ট ফিল্ডে থাকা ডেটা অনুসন্ধান করতে চান। উদাহরণস্বরূপ, Account
বা Contact
অবজেক্ট থেকে নির্দিষ্ট কিছু রেকর্ড এবং ফিল্ড পুনরুদ্ধার করতে SOQL ব্যবহার করা হয়।
// Account অবজেক্ট থেকে Id এবং Name ফিল্ডের ডেটা পুনরুদ্ধার
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
// Aggregate Function ব্যবহার
AggregateResult[] results = [SELECT COUNT(Id), AVG(AnnualRevenue) FROM Account WHERE Industry = 'Manufacturing'];
SOSL হলো Salesforce-এর সার্চ ভাষা, যা Salesforce ডেটাবেজের একাধিক অবজেক্টে একসাথে অনুসন্ধান করতে ব্যবহৃত হয়। এটি মূলত তখন ব্যবহার করা হয়, যখন ডেভেলপাররা একাধিক অবজেক্টের বিভিন্ন ফিল্ডে নির্দিষ্ট কী-ওয়ার্ড ভিত্তিক সার্চ করতে চান।
SOSL ব্যবহার করে সার্চ চালানো হলে একাধিক অবজেক্টের মধ্যে একটি কী-ওয়ার্ড খুঁজে সব মিল থাকা রেকর্ডকে রিটার্ন করা হয়। এটি অনেকটা সার্চ ইঞ্জিনের মতো কাজ করে।
// বিভিন্ন অবজেক্টে 'John' নামে থাকা সমস্ত রেকর্ড খুঁজে বের করা
List<List<SObject>> searchResults = [FIND 'John' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)];
// Contact এবং Account অবজেক্টে নির্দিষ্ট তথ্য সার্চ করা
List<List<SObject>> searchResults = [FIND 'Tech' IN ALL FIELDS RETURNING Account(Name), Opportunity(Name)];
বৈশিষ্ট্য | SOQL | SOSL |
---|---|---|
ব্যবহার | নির্দিষ্ট অবজেক্টের ডেটা কুয়েরি করতে | একাধিক অবজেক্টে কী-ওয়ার্ড সার্চ করতে |
কুয়েরি ভাষা | SELECT কিওয়ার্ড ব্যবহার করে | FIND কিওয়ার্ড ব্যবহার করে |
ফিল্টারিং | WHERE ক্লজ দিয়ে ফিল্টার করা যায় | ফিল্টারিং কম; নির্দিষ্ট অবজেক্টের সার্চ |
Aggregate Functions | সমর্থিত | সমর্থিত নয় |
Parent-Child Relationship | সমর্থিত | সমর্থিত নয় |
ফিল্ড টাইপ | নির্দিষ্ট ফিল্ডে অনুসন্ধান | সমস্ত ফিল্ডে অনুসন্ধান |
SOQL এবং SOSL উভয়ই Salesforce প্ল্যাটফর্মে ডেটা অনুসন্ধান এবং পুনরুদ্ধারের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। SOQL নির্দিষ্ট অবজেক্টের ডেটা কুয়েরি এবং সম্পর্কিত তথ্য পুনরুদ্ধার করতে ব্যবহৃত হয়, যেখানে SOSL ব্যবহার করে একাধিক অবজেক্টের বিভিন্ন ফিল্ডে দ্রুত কী-ওয়ার্ড ভিত্তিক সার্চ করা যায়। SOQL-এর অ্যাগ্রিগেট ফাংশন এবং Relationship Query-এর মত ফিচারগুলো বিশ্লেষণ এবং রিপোর্টিংয়ে সহায়ক, অন্যদিকে SOSL মাল্টি-অবজেক্ট সার্চে অত্যন্ত কার্যকরী।
Apex ট্রিগার হলো একটি Apex কোড যা স্বয়ংক্রিয়ভাবে কার্যকর হয় যখন Salesforce ডেটাবেজে নির্দিষ্ট ইভেন্ট ঘটে, যেমন নতুন রেকর্ড ইনসার্ট, আপডেট, বা ডিলিট করা হয়। ট্রিগার মূলত Salesforce ডেটাবেজে স্বয়ংক্রিয়ভাবে নির্দিষ্ট কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়, এবং এটি বিভিন্ন ব্যবসায়িক নিয়ম এবং প্রক্রিয়া অটোমেশনে সহায়ক।
Apex ট্রিগার সাধারণত কাস্টম ডেটা প্রসেসিং বা ভ্যালিডেশন করার জন্য ব্যবহৃত হয়, যা Salesforce-এর স্ট্যান্ডার্ড কার্যাবলির মাধ্যমে সম্ভব নয়। নিচে Apex ট্রিগারের কয়েকটি সাধারণ ব্যবহার বর্ণনা করা হলো:
ডেটা ভ্যালিডেশন ও অটোমেশন: কোনো রেকর্ড তৈরি বা আপডেট হওয়ার সময় স্বয়ংক্রিয়ভাবে নির্দিষ্ট ডেটা চেক এবং যাচাই করতে ট্রিগার ব্যবহৃত হয়। যেমন, যদি কোনো ফিল্ডের ভ্যালু একটি নির্দিষ্ট রেঞ্জে না থাকে, তবে তা স্বয়ংক্রিয়ভাবে সংশোধন করা বা নির্দিষ্ট বার্তা প্রদান করা যায়।
ডেটা সম্পর্ক সংরক্ষণ: একাধিক অবজেক্টের মধ্যে সম্পর্কিত ডেটা আপডেট করার জন্য ট্রিগার ব্যবহার করা যায়। উদাহরণস্বরূপ, যখন Opportunity-এর স্ট্যাটাস পরিবর্তন হয়, তখন স্বয়ংক্রিয়ভাবে Account-এর স্ট্যাটাস পরিবর্তন করা।
অডিটিং ও লগিং: ডেটার পরিবর্তন সম্পর্কে অডিটিং বা লগিং করার জন্য ট্রিগার কার্যকর। যেমন, যদি কোনো রেকর্ড ডিলিট করা হয়, তবে ট্রিগার সেটি একটি পৃথক লগে সংরক্ষণ করতে পারে।
নতুন রেকর্ড তৈরি: কোনো অবজেক্টে একটি রেকর্ড তৈরি হলে, সেটির উপর ভিত্তি করে অন্য একটি অবজেক্টে নতুন রেকর্ড তৈরি করতে ট্রিগার ব্যবহার করা যায়। যেমন, নতুন কনট্যাক্ট তৈরি হলে স্বয়ংক্রিয়ভাবে একটি স্বাগত চিঠি পাঠানোর জন্য একটি রেকর্ড তৈরি করা।
ডেটা সামঞ্জস্যতা রক্ষা: ডেটার সামঞ্জস্যতা নিশ্চিত করার জন্য বিভিন্ন অবজেক্টের মধ্যে স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশন পরিচালনা করা। উদাহরণস্বরূপ, একটি ফিল্ডের মান পরিবর্তন হলে অন্য একটি অবজেক্টের ফিল্ডের মানও আপডেট করা।
Apex ট্রিগার তৈরি করতে কিছু ধাপ অনুসরণ করা হয়। সাধারণত ট্রিগার লেখার সময় তার ইভেন্ট, টাইমিং, এবং প্রয়োজনীয় লজিক নির্ধারণ করা হয়। একটি সাধারণ ট্রিগার লেখার কাঠামো নিচে দেখানো হলো:
trigger AccountTrigger on Account (before insert, after insert, before update, after update) {
if (Trigger.isBefore) {
if (Trigger.isInsert) {
// Insert-এর আগে কার্যক্রম
} else if (Trigger.isUpdate) {
// Update-এর আগে কার্যক্রম
}
}
if (Trigger.isAfter) {
if (Trigger.isInsert) {
// Insert-এর পরে কার্যক্রম
} else if (Trigger.isUpdate) {
// Update-এর পরে কার্যক্রম
}
}
}
এখানে AccountTrigger
নামে একটি ট্রিগার তৈরি করা হয়েছে যা Account
অবজেক্টের উপর কার্যকর হয়। এই ট্রিগারটি before insert
, after insert
, before update
, এবং after update
ইভেন্টে কাজ করবে।
ধরুন, আমাদের এমন একটি ট্রিগার দরকার যা Account রেকর্ড তৈরি করার পর একটি কাস্টম ফিল্ডে স্বয়ংক্রিয়ভাবে মান ইনসার্ট করবে।
trigger AccountTrigger on Account (after insert) {
for (Account acc : Trigger.new) {
acc.Custom_Field__c = 'Default Value';
}
update Trigger.new;
}
এই উদাহরণে, AccountTrigger
নামের ট্রিগারটি after insert
ইভেন্টে কাজ করবে। নতুন Account রেকর্ড ইনসার্ট করার পর এটি স্বয়ংক্রিয়ভাবে Custom_Field__c
ফিল্ডে ডিফল্ট মান সেট করবে এবং সেই রেকর্ড আপডেট করবে।
Apex ট্রিগার বিভিন্ন ইভেন্টে কার্যকর করা যায়। প্রধান ইভেন্টগুলো হলো:
Apex ট্রিগার বিভিন্ন ব্যবসায়িক প্রক্রিয়া অটোমেশনে সাহায্য করে এবং Salesforce ডেটাবেজে ডেটা পরিবর্তনের উপর ভিত্তি করে স্বয়ংক্রিয় কার্যক্রম পরিচালনা করে। এর মাধ্যমে ডেটা ভ্যালিডেশন, ডেটা সম্পর্কিত কার্যক্রম, এবং অডিটিং সহজ হয়। Apex ট্রিগারের সাহায্যে একটি ডেটা মডেল কাস্টমাইজড নিয়ম মেনে পরিচালনা করা সহজ এবং কার্যকর হয়।
Apex-এর সিনট্যাক্স এবং কম্পাইলেশন প্রক্রিয়া Salesforce প্ল্যাটফর্মে কোড লেখার সময় গুরুত্বপূর্ণ ভূমিকা পালন করে। Apex এর সিনট্যাক্স কিছুটা Java-এর মতো এবং এটি Salesforce প্ল্যাটফর্মের জন্য নির্দিষ্ট কিছু নিয়ম ও সীমাবদ্ধতা অনুসরণ করে। Apex কোড কম্পাইল এবং ডিবাগ করার পদ্ধতিও অন্যান্য প্রোগ্রামিং ভাষার থেকে কিছুটা আলাদা।
Apex-এর সিনট্যাক্স Java এর সাথে বেশ মিল থাকলেও এটি Salesforce-এর জন্য নির্দিষ্ট কিছু নিয়ম মেনে চলে। নিচে Apex-এর কিছু সাধারণ সিনট্যাক্স কনভেনশন ব্যাখ্যা করা হলো:
Class Declaration (ক্লাস ডিক্লারেশন): Apex-এ ক্লাস ডিফাইন করার সময় public
, private
, অথবা global
কিওয়ার্ড ব্যবহার করতে হয়।
public class MyClass {
// ক্লাসের মধ্যে বিভিন্ন মেথড, ভ্যারিয়েবল ইত্যাদি ডিফাইন করা যায়
}
Variable Declaration (ভ্যারিয়েবল ডিক্লারেশন): Apex-এ বিভিন্ন ডেটা টাইপে ভ্যারিয়েবল ডিক্লারেশন করা যায়, যেমন String
, Integer
, Boolean
, ইত্যাদি।
public String myString = 'Hello Apex';
public Integer myNumber = 50;
Method Declaration (মেথড ডিক্লারেশন): Apex-এ মেথড ডিক্লারেশন করতে অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ, মেথড নাম, এবং প্যারামিটার ব্যবহার করতে হয়।
public void myMethod() {
System.debug('Hello from Apex');
}
SOQL Query Integration: Apex-এ SOQL কুয়েরি লিখে Salesforce ডেটাবেজ থেকে ডেটা পুনরুদ্ধার করা যায়।
List<Account> accounts = [SELECT Id, Name FROM Account];
Control Statements (কন্ট্রোল স্টেটমেন্ট): Apex-এ সাধারণ কন্ট্রোল স্টেটমেন্ট (যেমন: if-else, for loop, while loop) ব্যবহার করা যায়।
if(myNumber > 0) {
System.debug('Positive number');
}
Exception Handling (এক্সসেপশন হ্যান্ডলিং): Apex-এ try-catch-finally ব্লক ব্যবহার করে এক্সসেপশন হ্যান্ডল করা হয়।
try {
Integer result = 10 / 0;
} catch (ArithmeticException e) {
System.debug('Cannot divide by zero');
}
Apex একটি ক্লাউড-বেজড প্ল্যাটফর্মে কাজ করে, তাই কম্পাইলেশন প্রক্রিয়া সরাসরি Salesforce সার্ভারে সম্পন্ন হয়। Apex কোড সংরক্ষণ এবং এক্সিকিউট করার প্রক্রিয়াটি নিচে ব্যাখ্যা করা হলো:
Compilation in the Cloud: Apex কোড Salesforce সার্ভারে কম্পাইল হয়। যখন কোড সংরক্ষণ করা হয়, এটি Salesforce-এর সিস্টেমে কম্পাইল হয় এবং কোনো ভুল থাকলে তৎক্ষণাৎ একটি ত্রুটি বার্তা প্রদান করে।
Syntax Checking: Apex সংরক্ষণ করার সময়ই এটি সিনট্যাক্স চেক করে এবং যদি কোনো সমস্যা থাকে, তাহলে তাৎক্ষণিকভাবে ত্রুটি মেসেজ দেয়। এইভাবে ত্রুটি সংশোধন করা সহজ হয়।
Governor Limits: Salesforce-এর গভর্নর লিমিট অনুযায়ী নির্দিষ্ট সময়ে এবং নির্দিষ্ট রিসোর্সের সীমার মধ্যে কোড সম্পন্ন করতে হবে। গভর্নর লিমিট ছাড়িয়ে গেলে কোড ব্যর্থ হয় এবং ত্রুটি প্রদান করে।
Testing Requirements: Apex কোড ডেপ্লয় করার আগে Salesforce ৭৫% কোড কাভারেজ নিশ্চিত করে। তাই প্রতিটি ক্লাস এবং ট্রিগারের জন্য ইউনিট টেস্ট লিখে কম্পাইল করা প্রয়োজন।
Execution Context: Apex বিভিন্ন নির্দিষ্ট প্রসেসিং মেকানিজম অনুযায়ী কাজ করে। যেমন- এটি ট্রিগার বা ব্যাচ প্রসেসিংয়ের জন্য নির্দিষ্ট প্রসেসিং লজিক অনুসরণ করে।
Debug Logs এবং Testing: Apex-এর ডিবাগ লোগের মাধ্যমে কোডের কার্যকারিতা মনিটর করা যায়। Salesforce প্ল্যাটফর্মে ডেভেলপার কনসোল ব্যবহার করে ডিবাগ লোগ দেখা এবং এক্সিকিউশন ম্যানেজ করা যায়।
কোড লেখার পর সংরক্ষণ: Apex কোড Salesforce প্ল্যাটফর্মে সংরক্ষণ করার সময় এটি তাৎক্ষণিকভাবে কম্পাইল হয় এবং কোনো ত্রুটি থাকলে বার্তা প্রদর্শন করে।
ডিবাগিং: Salesforce ডেভেলপার কনসোলের মাধ্যমে ডিবাগ লোগ দেখা যায়। System.debug
ব্যবহার করে কোডে যে কোন স্থানে ডিবাগ মেসেজ যোগ করা যায়।
টেস্ট রেসাল্ট চেক করা: কোড ডেপ্লয় করার জন্য সঠিকভাবে টেস্ট রেসাল্ট পাস করা প্রয়োজন। Salesforce প্ল্যাটফর্মে ইউনিট টেস্টিং টুলস ব্যবহার করে টেস্ট রেসাল্ট যাচাই করা যায়।
Apex এর সিনট্যাক্স Java এর সাথে মিল থাকলেও Salesforce-এর গভর্নর লিমিট, টেস্টিং প্রয়োজনীয়তা এবং ক্লাউড ভিত্তিক কম্পাইলেশন প্রক্রিয়ার কারণে এটি একটু আলাদা। Apex-এর এই কম্পাইলেশন প্রক্রিয়া নিশ্চিত করে যে কোড সঠিকভাবে কাজ করবে এবং Salesforce প্ল্যাটফর্মের নিয়ম এবং সীমাবদ্ধতা মেনে চলবে।
common.read_more